package alejandro.castro.extras;

import alejandro.castro.arkanoid.ArkanoidScene;
import alejandro.castro.bolita.Bolita;

import com.uqbar.vainilla.GameComponent;

public abstract class BloqueComponent extends GameComponent<ArkanoidScene> {
	

	private EstadoComportamientoBloque estadoComportamiento;
	public Bolita bolitaPegada;

	public abstract double getWidth();

	public abstract double getHeight();
	
	

	public EstadoComportamientoBloque getEstadoComportamiento() {
		return estadoComportamiento;
	}
	
	

	public void setEstadoComportamiento(EstadoComportamientoBloque estadoComportamiento) {
		this.estadoComportamiento = estadoComportamiento;
	}

	/*
	 * Especifica si el centro de la bolita esta sobre o debajo de la paleta
	 */
	public boolean coincidePosicionX(Bolita bolita) {
		return (this.borderLeft() < bolita.centerX()) && (this.borderRight() > bolita.centerX());
	}

	public boolean coincidePosicionY(Bolita bolita) {
		return (this.borderBottom() > bolita.centerY()) && (this.borderTop() < bolita.centerY());
	}
	
	public double borderLeft(){
		return this.getX();
	}
	public double borderRight(){
		return this.getX() + getWidth();
	}	
	public double borderTop(){
		return this.getY();
	}
	public double borderBottom(){
		return this.getY() + getHeight();
	}
	
	public void efectoFriccion(Bolita bolita) {
		//Nothing here	
	}

	public double lastMoveX() {
		return 0;
	}

	public double lastMoveY() {
		return 0;
	}

	public Bolita getBolitaPegada() {
		return bolitaPegada;
	}

	public void setBolitaPegada(Bolita bolitaPegada) {
		this.bolitaPegada = bolitaPegada;
	}



	
}
